An error correction code is a technology used in a communication system, a broadcasting system, a storage apparatus, and the like. More specifically, the error correction code adds redundant bits to digital data for transmission or storage to allow, even when there is an error bit in received data or data read from a storage medium, the error to be corrected. Note, however, that the number of correctable error bits is limited, and the number of correctable error bits is different depending on error correction performance of the error correction code method.
In this field of art, data to be transmitted or stored is referred to as “information bits”, and the redundant bits added to the information bits are referred to as “parity bits”. The parity bits are calculated from the information bits by a calculation method that is different depending on the coding method of the error correction code. In addition, a bit string obtained by combining the information bits and the parity bits is referred to as “codeword”.
An error correction code called “block code” calculates the parity bits from the information bits in units of a predetermined number of bits. In other words, the number of information bits and the number of parity bits in one codeword are predetermined and referred to as “information bit length” and “parity bit length”, respectively. Moreover, the number of bits of the codeword is referred to as “code length”.
In recent years, as the error correction code, a low-density parity-check (LDPC) code has been in wide use. The LDPC code is a block code defined by a sparse parity check matrix (hereinafter referred to as “check matrix”) having a few non-zero elements.
In the specification of the present invention, each matrix element of the check matrix is 0 or 1. Moreover, the number of 1s contained in a column of the check matrix is referred to as “column weight”. Moreover, each column of the check matrix corresponds to each bit forming the codeword. In other words, the number of columns of the check matrix is the code length. Moreover, in a case where the check matrix has full rank, the number of rows of the check matrix is equal to the parity bit length.
Now, a spatially-coupled LDPC code defined by a check matrix as in FIG. 11, for example, has been theoretically analyzed and shown to have high error correction performance (see, for example, Non Patent Literature 1).
In FIG. 11, the outer enclosing rectangle indicates a check matrix for the spatially-coupled LDPC code, and the rectangles (check submatrices) therein indicate submatrices for the spatially-coupled LDPC code. Matrix elements in parts other than the rectangles indicating the check submatrices are all 0s. Note that, each check submatrix also serves as a check matrix by itself, and a large check matrix formed by diagonally coupling a plurality of the check submatrices as in FIG. 11 is the check matrix for the spatially-coupled LDPC code.
The theoretical analysis disclosed in Non Patent Literature 1 evaluates the error correction performance of the spatially-coupled LDPC code by using a numerical analysis method called “density evolution” under a condition that the check matrix has the structure as in FIG. 11. As a result of the analysis, the spatially-coupled LDPC code has been shown to have high error correction performance approaching the theoretical limit.